import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class String_ {

    public static void main(String[] args) {
        String str = "abcdef";
        String bit = str.concat("bit");// 拼接的结果不入池
        System.out.println(bit);
        System.out.println(str.isEmpty());// 是否为空,str=null 或者长度为0
    }

    public static void main12(String[] args) {
        // 转大小写
        String str = "hello WORld";
        String upper = str.toUpperCase();
        String lower = str.toLowerCase();
    }

    public static void main11(String[] args) {
        String str = "   abc   hello  ";
        String trim = str.trim();// 去除左右的空格
        System.out.println(trim);//abc   hello
    }

    public static void main10(String[] args) {
        // 字符串截取
        String str = "abcdef";
        String str1 = str.substring(2);// 提取子串
        String str2 = str.substring(2,4);// 提取子串,左闭右开
        // 如果传入0，不会new对象，直接返回this当前对象，否则需要new对象
        System.out.println(str1);
        System.out.println(str2);
    }

    public static void main9(String[] args) {
        // 用|可以用多个分隔符分割，|用来分割 分隔符
        String str = "Java30 12&21#hello";
        String[] strings = str.split(" |&|#");
        for (String s : strings) {
            System.out.println(s);
        }
    }

    public static void main8(String[] args) {
        /**
         * | * + .比较特殊，需要转义，而一个\也比较特殊，所以需要加\\
         */
        String str = "192.168.1.1";
        String str2 = "192\\168\\1\\1";
        String[] strings = str.split("\\.");
        String[] strings2 = str2.split("\\\\",6);// 以.分割，最多分2组
        for (String s : strings) {
            System.out.println(s);
        }
        System.out.println("================");
        for (String s : strings2) {
            System.out.println(s);
        }
    }

    public static void main7(String[] args) {
        // 分割 split
        String str = "name=jack#age=23#writer=sweeter#price=99";
        String[] strings = str.split("#");
        for (String s : strings) {
            System.out.println(s);
        }
    }

    public static void main6(String[] args) {
        // 替换 replace、replaceAll、replaceFirst
        String str = "hello hehe world";
        String str1 = str.replace('l','g');// 产生一个新对象返回
        System.out.println(str1);//heggo hehe worgd
        String str2 = str.replace("he","g");// 产生一个新对象返回
        System.out.println(str2);//gllo gg world
        String str3 = str.replaceFirst("he","er");
        System.out.println(str3);//erllo hehe world
        String str4 = str.replaceAll("he","er");
        System.out.println(str4);//erllo erer world
    }

    public static void main5(String[] args) {
        // 查找 返回下标
        String str = "bsafrfdv";
        String temp = "af";
        //int index = str.lastIndexOf(temp);// 从后往前找，第一次出现该字符串的位置
        int index = str.lastIndexOf(temp,5);// 从第5位开始往前找，第一次出现该字符串的位置
        System.out.println(index);// 2

        System.out.println(str.startsWith("b"));// "a"开头，返回boolean类型
        System.out.println(str.startsWith("a",2));// 偏移量为2，以"a"开头，返回boolean类型

        System.out.println(str.endsWith("dv"));// 以...结尾
    }


    public static void main4(String[] args) {
        // 是否包含 contains
        String str = "bsafrfdv";
        String temp = "af";
        System.out.println(str.contains(temp));// 是否包含字符串
        System.out.println("=============");
//        int index = str.indexOf(temp);// 第一次出现该字符串的位置
//        System.out.println(index);//2
        int index = str.indexOf(temp,2);// 从2开始找，第一次出现该字符串的位置
        System.out.println(index);
    }


    public static void main3(String[] args) {
        // 比较是否相等，忽略大小写
        String str1 = "abcd";
        String str2 = "ABcd";
        System.out.println(str1.equalsIgnoreCase(str2));// 忽略大小写
        System.out.println(str1.compareTo(str2));// >0  ==0  <0
    }

    public static boolean isNumber(String s){
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
//            if(c<'0' || c>'9'){
//                return false;
//            }
            boolean flg = Character.isDigit(c);// 判断某个字符是否是数字
            if(flg == false){
                return false;
            }
        }
        return true;
    }
    public static void main2(String[] args) throws UnsupportedEncodingException {
        String s = "12354f56";
        System.out.println(isNumber(s));

        byte[] bytes = {97,98,99,100};
        String str = new String(bytes);
        System.out.println(str);// abcd

        String str2 = "三团";
        byte[] bytes1 = str2.getBytes("UTF-8");// 这里可以指定编码
        System.out.println(Arrays.toString(bytes1));
    }



    public static void main1(String[] args) {

        char[] val = {'a','b','c','d'};
        String str = new String(val);
        String str2 = new String(val,0,3);// 从下标为0开始，取三个
        System.out.println(str);
        System.out.println(str2);

        System.out.println("=================");
        String str3 = "hello";
        System.out.println(str3.charAt(3));// 获取下标为3的字符

        char[] chars = str3.toCharArray();// 把str3转成字符数组
        System.out.println(Arrays.toString(chars));
    }
}
